<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于嵌入式實(shí)時(shí)操作系統的現場(chǎng)總線(xiàn)網(wǎng)關(guān)的設計

基于嵌入式實(shí)時(shí)操作系統的現場(chǎng)總線(xiàn)網(wǎng)關(guān)的設計

作者: 時(shí)間:2012-08-21 來(lái)源:網(wǎng)絡(luò ) 收藏

(1) μC/OS-Ⅱ的移植;
(2) TCP/IP協(xié)議棧LwIP的移植;
(3)網(wǎng)絡(luò )設備驅動(dòng)程序。
l.LwIP協(xié)議棧的移植
為了使WorldFIP現場(chǎng)總線(xiàn)可以和Internet通信,在設計中必須把TCP/IP協(xié)議棧移植到μC/OS-Ⅱ操作系統中(μC/OS-Ⅱ移植將在后面介紹)。為了節省對系統資源的占用,設計中選用了開(kāi)源的TCP/IP協(xié)議?!狶wIP。LwIP協(xié)議棧是一個(gè)輕量的TCP/IP協(xié)議棧,一般只需要幾十千字節的RAM和40K左右的ROM就可以運行,這使LwIP協(xié)議棧適合在低端系統中使用。LwIP的源碼可以到相關(guān)的網(wǎng)站上下載,目前的版本是0.6.3。LwIP的特性如下:
(1)支持多網(wǎng)絡(luò )接口下的IP轉發(fā);
(2)提供專(zhuān)門(mén)的內部回調接口(Raw API)用于提高應用程序性能;
(3)可選擇的Berkeley接API。
為了方便移植,LwIP協(xié)議棧把所有與硬件、OS、編譯器相關(guān)的部分單獨放在/src/arch目錄下,因此移植時(shí)只需修改這個(gè)目錄下的文件即可,其他源文件一般不需要修改。在移植的過(guò)程中,最主要的是和OS相關(guān)的一些函數和結構,這些函數和結構在arch目錄下的sys_arch.h和sys_arch.c中定義和實(shí)現。主要有:
(l)sys_arch_timeout函數。
這個(gè)函數描述的是LwIP中與外界網(wǎng)絡(luò )連接的線(xiàn)程等待超時(shí)timeout屬性,該屬性與OS相關(guān)。每個(gè)線(xiàn)程的timeout屬性對應著(zhù)一個(gè)在sys.h中定義的結構體sys_timeout,我們所要實(shí)現的是如下函數:
struct sys_timeouts * sys_arch_timeouts(void)
該函數的功能是返回目前正處于運行態(tài)的線(xiàn)程所對應的timeout隊列指針。
(2)sys_sem_t信號量。
在LwIP中用信號量來(lái)實(shí)現同步,因此需要在sys_arch中實(shí)現sys_sem_t結構體和處理函數:
typedef OS_EVENT * sys_sem_t;
sys_sem_t sys_sem_new (lNT8U count);
void sys_sem_signal (sys_sem_t sem);
INTl6U sys_arch_sem_wait (sys_sem_t sem,INTl6U timeout);
void sys_sem_free (sys_sem_t sem);
μC/OS-Ⅱ已經(jīng)實(shí)現了信號量的各種操作,而且功能和LwIP中的幾個(gè)函數完全一樣的,所以在LwIP中只需把μC/OS-Ⅱ中的函數封裝打包。
(3) sys_mbox_t消息。
在LwIP中實(shí)現緩沖、數據傳遞要用到消息隊列,所以在sys_arch中實(shí)現sys_mbox_t結構體和處理函數:
typedef struct
{
OS_EVENT * pQ;
void * pvQEntries [MAX _ QUEUE _ EN_ TRIES];
} sys_mbox_t;
sys_mbox_t;
sys_mbox_t sys_mbox_new (void);
void sys_mbox_post(sys_mbox_t mbox,void * msg);
INT16U sys_arch_mbox_fetch (sys_mbox_tmbox,void * * msg,INT16U timeout);
void sys_mbox_free (sys_mbox_t mbox);

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>